import express from "express";
import { School } from "../../models/School.mjs";
import importRoutes from "./import.mjs";
import statisticsRoutes from "./statistics.mjs";

const router = express.Router();

// 使用子路由
router.use("/import", importRoutes);
router.use("/statistics", statisticsRoutes);

/**
 * @swagger
 * /api/school:
 *   get:
 *     summary: 获取所有学校数据
 *     description: 获取所有学校数据
 *     responses:
 *       200:
 *         description: 学校数据获取成功
 */
// 获取所有学校数据
router.get("/", async (req, res) => {
  console.log("获取所有学校数据");
  try {
    const schools = await School.find();
    res.json(schools);
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
});

/**
 * @swagger
 * /api/school/{name}:
 *   get:
 *     summary: 根据学校名称获取学校数据
 *     description: 根据学校名称获取学校数据
 *     responses:
 *       200:
 *         description: 学校数据获取成功
 */
// 根据学校名称获取学校数据
router.get("/:name", async (req, res) => {
  console.log("根据学校名称获取学校数据");
  try {
    const schoolName = req.params.name;
    const school = await School.findOne({ name: schoolName });

    if (!school) {
      return res.status(404).json({ message: "未找到该学校" });
    }

    res.json(school);
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
});

/**
 * @swagger
 * /api/school/{name}/majors:
 *   get:
 *     summary: 获取学校专业数据
 *     description: 获取学校专业数据
 *     responses:
 *       200:
 *         description: 学校专业数据获取成功
 */
// 获取学校专业数据
router.get("/:name/majors", async (req, res) => {
  try {
    const schoolName = req.params.name;
    const school = await School.findOne({ name: schoolName });

    if (!school) {
      return res.status(404).json({ message: "未找到该学校" });
    }

    res.json({
      schoolName: school.name,
      majors: school.children || [],
    });
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
});

export default router;
